﻿Public Class ucEstoqueCadastro

#Region "Eventos públicos acessados pelo formulário de cadastro"
    Public Event Salvo()
    Public Event Cancelado()
#End Region

#Region "Estoque"
    Public Sub Novo()

        bsEstoque.AddNew()
        LoadEstoque()
        StatusForm(True)
    End Sub

    Public Sub Visualiza(ByVal Produto As Model.Produto)
        StatusForm(False)

        ' Grade
        Dim ctEstoque As New Control.Estoque
        bsEstoque.DataSource = ctEstoque.GetByIdProduto(Produto.cd_produto)

        LoadEstoque()

    End Sub

    Private Sub Salvar()

        bsEstoque.EndEdit()

        For Each e As Model.Estoque In bsEstoque.List
            Dim ControlEstoque As New Control.Estoque

            ControlEstoque.Salvar(e)

            ControlEstoque.Dispose()
        Next

        StatusForm(False)

        ' Avisa o form pricipal que salvou para retornar a pesquisa
        RaiseEvent Salvo()

    End Sub

    Private Sub Cancelar()
        bsEstoque.CancelEdit()

        StatusForm(False)

        ' Avisa o form pricipal que cancelou para retornar a pesquisa
        RaiseEvent Cancelado()

    End Sub

    Private Sub Editar()
        StatusForm(True)
    End Sub


    ''' <summary>
    ''' Carrega os combos
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub LoadEstoque()

        Dim Estoque As Model.Estoque
        Estoque = CType(bsEstoque.Current, Model.Estoque)

        Using ControlProduto As New Control.Produto
            bsProduto.DataSource = ControlProduto.ListaTudo()
        End Using
        If Estoque.Produto IsNot Nothing Then
            cboProduto.SelectedValue = Estoque.Produto.cd_produto
        Else
            cboProduto.SelectedValue = 0
            cboProduto.SelectedItem = Nothing
        End If

        Using ControlEstoqueLocal As New Control.EstoqueLocal
            bsEstoqueLocal.DataSource = ControlEstoqueLocal.ListaTudo()
        End Using
        If Estoque.EstoqueLocal IsNot Nothing Then
            cboLocal.SelectedValue = Estoque.EstoqueLocal.cd_estoque_local
        Else
            cboLocal.SelectedValue = 0
            cboLocal.SelectedItem = Nothing
        End If

    End Sub

    ''' <summary>
    ''' Controla a ativação dos obj no formulário
    ''' </summary>
    ''' <param name="Status"></param>
    ''' <remarks></remarks>
    Private Sub StatusForm(ByVal Status As Boolean)
        'pnlEstoque.Enabled = Status
        pnlEstoqueBar.Enabled = Status
        pnlEstoqueCampos.Enabled = Status
        btnSalvar.Enabled = Status
    End Sub

    Private Sub IncluiEstoque()
        ' Grava uma possível alteração anterior
        'bsEstoque.EndEdit()


        Dim Estoque As New Model.Estoque

        ' Novo
        bsEstoque.Add(Estoque)
        'bsEstoque.AddNew()

        cboProduto.Focus()

    End Sub

    ''' <summary>
    ''' Ao selecionar o produto vincula com o estoque
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub SetaProduto()
        Dim Estoque As Model.Estoque

        Estoque = CType(bsEstoque.Current, Model.Estoque)

        If cboProduto.SelectedIndex > -1 Then
            Estoque.Produto = CType(bsProduto.Current, Model.Produto)
        Else
            Estoque.Produto = Nothing
        End If
    End Sub

    ''' <summary>
    ''' Ao selecionar o local vincula com o estoque
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub SetaLocal()
        Dim Estoque As Model.Estoque

        Estoque = CType(bsEstoque.Current, Model.Estoque)

        If cboLocal.SelectedIndex > -1 Then
            Estoque.EstoqueLocal = CType(bsEstoqueLocal.Current, Model.EstoqueLocal)
        Else
            Estoque.EstoqueLocal = Nothing
        End If
    End Sub

#End Region

#Region "Métodos dos objetos do formulário"
    Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
        Salvar()
    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Editar()
    End Sub

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        Cancelar()
    End Sub

    Private Sub btnContatoIncluir_Click(sender As Object, e As EventArgs) Handles btnContatoIncluir.Click
        'IncluiEstoque()
    End Sub

    Private Sub cboProduto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboProduto.SelectedIndexChanged
        'SetaProduto()
    End Sub

    Private Sub cboLocal_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboLocal.SelectedIndexChanged
        'SetaLocal()
    End Sub
#End Region
End Class
